package com.lagou.module4_6;

/**
 * @author wsl
 * @date 2021/8/1 19:52
 * @project_name javase
 */
/*
*  共100张票,三个线程一起卖票,不允许出现出现负票和多卖的现象
*      (描述设置锁的时候要注意的事项:(Thread 和Runnable)
* */
public class SubThread extends Thread{
     private static int num = 100;   //用于记录总票数

    @Override
    public void run(){
        show();
    }

    public void show(){
        while (true) {
            synchronized (SubThread.class) {//利用反射机制
                if (num > 0) {
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(getName() + "买票，票号是：" + num);
                    num--;//出售一张票，则减一
                } else {
                    break;
                }
            }
        }
    }

    public static void main(String[] args) {

        SubThread st1 = new SubThread();
        st1.setName("窗口一");//线程命名
        st1.start();//启动线程

        SubThread st2 = new SubThread();
        st2.setName("窗口二");//线程命名
        st2.start();//启动线程

        SubThread st3 = new SubThread();
        st3.setName("窗口三");//线程命名
        st3.start();//启动线程
    }
}
